package com.algorithm.combination;

import java.util.Stack;

public class Zuhe {
    // Amn
    //    问题2：
    //    假设袋子里有编号为1,2,...,m这m个球。先后从袋子中取出n个球，依次记录编号，枚举所有可能的情况。

    static Stack<Integer> stack = new Stack<Integer>();
    static int cnt = 0;

    public static void testRecursion2() {
        int[] data = {1, 2, 3, 4, 5};
        recursion2(data, 0, 3);//A5 3
        System.out.println(cnt);
    }

    public static void recursion2(int[] array, int curnum, int maxnum) {
        if (curnum == maxnum) {
            cnt++;
            System.out.println(stack);
            return;
        }
        for (int item : array) {
            if (!stack.contains(item)) {
                stack.push(item);
                recursion2(array, curnum + 1, maxnum);
                stack.pop();
            }
        }
    }

    public static void main(String[] args) {
        testRecursion2();
    }
}
